rgb和十六进制颜色代码相互转换

css中常用的两种颜色表示方式分别是rgb和十六进制两种,有时候可能特殊需要,要将获取到的rgb颜色转换为十六进制,反之也有这种情况。网上这种颜色转换工具比较少,于是本人就开发了这么一个小工具,方便使用,并将代码分享给大家。

先上效果图:

工具地址:http://oohy4f8bb.bkt.clouddn.com/colorExchange.html


代码实现

  • 原生js获取DOM对象、绑定事件

  • js正则表达式校验用户输入

  • parseInt(,16)16进制转10进制

  • num.toString(16)10进制转16进制


完整代码如下:

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>rgb与十六进制颜色转换</title>

<style>

*{

font-family: "微软雅黑";

box-sizing:border-box;

}

html,body,.page{

height:100%;

margin:0px;

}

.page{

background:url(http://ol435r2l8.bkt.clouddn.com/background.jpg) no-repeat center /100%;

}

.main{

width: 751px;

height: 100%;

margin: 0 auto;

background: rgba(255, 255, 255, 0.81);

}

.header{

text-align: center;

height: 46px;

line-height: 46px;

font-size: 26px;

background-color: #5cdc85;

color: #fff;

border-radius: 0px;

box-shadow: 0px 8px 5px #b5b5b5;

}

.content{

margin: 50px 10px;

}

input{

height:35px;

width:200px;

outline:0;

border:1px solid #EEEEEE;

padding:5px;

}

input.rgb{

width:50px;

}

.btn{

width: 60px;

height: 30px;

line-height: 30px;

text-align: center;

display: inline-block;

background: #55aae2;

color: #fff;

border-radius: 3px;

cursor:pointer;

}

#rgbOutput,#hexOutput{

color: rgb(191, 9, 244);

font-size: 16px;

font-weight: 600;

}

#rgbColor,#hexColor{

display: inline-block;

width: 30px;

height: 30px;

position: absolute;

margin-left: 60px;

}

</style>

</head>

<body>

<div class="page">

<div class="main">

<header>

<div class="header">颜色代码转换</div>

</header>

<div class="content">

<p>

<span>十六进制颜色:</span>

<input id="i-hexcode" type="text" placeholder="填写16进制颜色 如:#FFFFFF">

<span class="btn" id="16torgb">转换</span>

</p>

<p id="o-rgbcode">

<span id="rgbOutput"></span>

<span id="rgbColor"></span>

</p>

<p style="margin-top: 30px;">

<span>RGB颜色:</span>

<input id="i-rgbcodeR" type="text" class="rgb">

<input id="i-rgbcodeG" type="text" class="rgb">

<input id="i-rgbcodeB" type="text" class="rgb">

<span class="btn" id="rgbto16">转换</span>

</p>

<p id="o-hexcode">

<span id="hexOutput"></span>

<span id="hexColor"></span>

</p>

</div>

</div>

</div>

<script>

//颜色值输入区域

var i_hexcode = document.getElementById("i-hexcode");

var i_rgbcodeR = document.getElementById("i-rgbcodeR");

var i_rgbcodeG = document.getElementById("i-rgbcodeG");

var i_rgbcodeB = document.getElementById("i-rgbcodeB");

//颜色值输出区域

var rgbOutput = document.getElementById("rgbOutput");

var rgbColor = document.getElementById("rgbColor");

var hexOutput = document.getElementById("hexOutput");

var hexColor = document.getElementById("hexColor");

//16进制转rgb转换按钮

var _16torgb = document.getElementById("16torgb");

//rgb转16进制转换按钮

var rgbto16 = document.getElementById("rgbto16");

//校验16进制颜色值正则表达式

var reg = /^#([0-9a-fA-F]{6}[0-9a-fA-F]{3})$/;

//校验rgb颜色值只能输入整数且最多三位数字

var regRgb = /^[0-9]{1,3}$/;

//为按钮注册点击事件

_16torgb.addEventListener("click",sixteenToRgb);

rgbto16.addEventListener("click",rgbToSixteen);

/**

* 16toRgb颜色转换

*/

function sixteenToRgb(){

var hexValue = i_hexcode.value;

//首先校验用户填写的代码是否正确

if(!reg.test(hexValue)){

alert("颜色值输入有误请检查!");

}else{

var codeValue = hexValue.replace("#",'');

var rgbStr = "";

if(codeValue.length==6){

var decR = parseInt(codeValue.slice(0,2),16);

var decG = parseInt(codeValue.slice(2,4),16);

var decB = parseInt(codeValue.slice(4,6),16);

rgbStr = decR+','+decG+','+decB;

}else{

var decR = codeValue.slice(0,1);

var decG = codeValue.slice(1,2);

var decB = codeValue.slice(2,3);

decR = parseInt(decR+decR,16);

decG = parseInt(decG+decG,16);

decB = parseInt(decB+decB,16);

rgbStr = decR+','+decG+','+decB;

}

rgbOutput.innerText = rgbStr;

rgbColor.style.background = "rgb("+rgbStr+")";

}

}

/**

* rgbto16颜色转换

*/

function rgbToSixteen(){

var rgbValueR = i_rgbcodeR.value;

var rgbValueG = i_rgbcodeG.value;

var rgbValueB = i_rgbcodeB.value;

//首先校验用户填写的代码是否正确

if((!regRgb.test(rgbValueR)rgbValueR>255)(!regRgb.test(rgbValueG)rgbValueG>255)(!regRgb.test(rgbValueB)rgbValueB>255)){

alert("颜色值输入有误请检查!");

}else{

var rgbValueR = parseInt(rgbValueR);

var rgbValueG = parseInt(rgbValueG);

var rgbValueB = parseInt(rgbValueB);

var rToHex = rgbValueR.toString(16);

var gToHex = rgbValueG.toString(16);

var bToHex = rgbValueB.toString(16);

if(rToHex.length==1){

rToHex = "0"+rToHex;

}

if(gToHex.length==1){

gToHex = "0"+gToHex;

}

if(bToHex.length==1){

bToHex = "0"+bToHex;

}

hexOutput.innerText = "#"+rToHex+gToHex+bToHex;

hexColor.style.background = "#"+rToHex+gToHex+bToHex;

}

}

</script>

</body>

</html>

免责声明:本文作者:“Inn程序媛”,版权归作者所有,观点仅代表作者本人。本站仅提供信息存储分享服务,不拥有所有权。信息贵在分享,如有侵权请联系ynstorm@foxmail.com,我们将在24小时内对侵权内容进行删除。
(125)
xp鼠标指针主题包(电脑鼠标键盘总是出现
上一篇 2024年01月11日
elle包包(想送一个包包给自己喜欢已久
下一篇 2024年01月11日

相关推荐

  • iphone5 掉漆(iphone12pro掉色吗)

    iPhone12Pro不会掉色。iPhone12Pro系列使用了高品质的OLED屏幕,具有高对比度和出色的色彩表现。此外,该系列还配备了硬度更高的玻璃后壳,能够保护屏幕免受磨损和擦伤。所以,iPhone12Pro系列的屏幕和后壳都具有良好的保...

    2023年10月31日
  • 华为b5微信看不了(哪里能在线看最新电影)

    一、Neets.cc--一款相见恨晚的在线视频观看网站。聚合全网搜索链接,电影、动漫、电视剧、综艺...不论是新出的电影还是最热的电视剧或者综艺,都可以在线观看,同时能够提供订阅和热剧推荐功能,一站集合全网资源。...

    2023年11月03日
  • 全选的快捷键是什么(lrc全选快捷键)

    在Lightroom里点击快捷键Ctrl+a就是全选,批量选可以先点击第一张图片,然后按住shift键点击最后一张,就是批量选择。...

    2023年11月03日
  • dnf怎么净化(dnf垃圾100史诗怎么处理)

    首先目前的护石系统虽然只可以装备两种护石,但是并不代表以后就不会增加护石的上限,在未来的护石系统可能会像装备栏,技能栏一样新增几个护石上限,以提高玩家技能的实用性和伤害,所以考虑到未来新增护石上限的可能性,护石多的玩家可以把当前所有本职业的5...

    2023年11月22日
  • 华硕官网摄像头驱动下载(armourycrate可以装驱动吗)

    还请到华硕官方网站下载。在下载驱动之前,可以直接在服务与支持页面首页的搜索框中输入产品型号,或者在官网任意页面右上角的搜索框中输入产品型号,输入完毕后,搜索框下方会出现候选关键字,直接点击产品型号的候选关键字,即可直达驱动下载页面。Armou...

    2023年11月26日
  • cad看图软件(怎么用手机扫描图片成cad图纸)

    1、我们先要打开手机应用市场,输入看图,下载并安装,完成安装后点击打开。切换到所有文件界面,找到Download文件夹打开后,可以看到接收的微信文件列表,在下方找到最新接收的cad图纸,轻触即可打开。...

    2023年11月28日
  • oppo是哪个国家的品牌(oppo和欧珀有什么区别)

    没有区别。因为“oppo”和“欧珀”其实是同一个品牌,只不过因为翻译的不同,在不同的市场上使用了不同的名称。例如,中文市场一般使用“oppo”,而英文市场则使用“Oppo”。但是不管是哪个名称,品牌本身并没有变化。Oppo是一家中国电子公司,...

    2023年12月02日
  • 滤膜规格(ro膜50和100g的区别)

    50G表示每24小时产出50加仑(约189升)的纯水,而100G表示每24小时可以产出100加仑(约378升)的纯水。这个流量是基于典型的家庭饮用水需求估算得出的。...

    2024年04月07日
  • 苹果手机怎么录屏(苹果手机买回来怎么录屏)

    打开苹果手机设置—控制中心,在“自制控制”里下拉找到“屏幕录制”,将其添加到主屏幕控制下,这时返回主屏幕,手指屏幕上滑就可以看到“屏幕录制”的标志,点击一下3秒后开始录制,想要结束录制,再点击一下小圆点就可以。...

    2024年05月08日
  • postek(如何将数字转换成二维码)

    打开二维码制作软件,新建标签之后,点击软件上方工具栏中的”数据库设置”按钮,弹出数据库设置对话框,点击”添加”(选择要导入的数据库类型excel表),根据提示点击浏览-测试连接-添加-关闭。Excel表就导入到二维码制作软件中了。...

    2024年05月19日
返回顶部